﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Iacym.Entities;
using Iacym.BusinessLogic;
using Microsoft.Practices.Unity;

namespace Iacym.UI
{
    public partial class FrmMenu : Form
    {

        [Dependency]
        public IUsuarioMenuBL usuMenuBL { get; set; }

        public FrmMenu()
        {
            InitializeComponent();
            this.BuildUp();
            this.FormClosed += FrmMenu_FormClosed;
        }

        private void FrmMenu_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
        {
            Application.Exit();
        }

        public USUARIO currentUsuario { get; set; }

        private void FrmMenu_Load(object sender, EventArgs e)
        {
            if (currentUsuario != null)
            {
                menuLlena();
                Text = "BIENVENIDO: " + currentUsuario.PERSONA.NombreCompleto;
                mostrarCumpleaños();
            }
            else
                mostrarCumpleaños();
        }

        public void mostrarCumpleaños()
        {
            if (dtpFechaSistema.Value.Day == 15)
            {
                FrmCumpleaños frm = new FrmCumpleaños();
                frm.MdiParent = this;
                frm.Show();
            }
        }

        public void menuLlena()
        {
            var datoUsuario = usuMenuBL.GetAllFromUsuarioByPersonaFromLogin(currentUsuario.PERSONA.Dni);

            var permisos = (from p in usuMenuBL.GetAllUsuarioMenu(datoUsuario.UsuarioId)
                            select p.MENU.Tag.ToString()).ToArray();

            Telerik.WinControls.RadItem[] menuRibon = new Telerik.WinControls.RadItem[] {
            this.ofrendas,this.ofrenda,this.busOfrenda,this.regOfrenda,this.tipoReunion,this.busTipoReunion,this.regTipoReunion,
            this.citas,this.cita,this.busCitas,this.regCitas,
            this.asistencias,this.asistencia,this.busAsistencia,this.regAsistencia,
            this.miembros,this.persona,this.busMiembro,this.regMiembro,this.discipulado,this.busDiscipulado,//this.regDiscipulado,
            this.transferencia,this.busTransferencia,this.regTransferencia,this.matrimonio,this.busMatrimonio,this.regMatrimonio,
            this.mantenimientoRegistro,this.ubigeo,this.busUbigeo,this.regUbigeo,this.profesion,this.busProfesion,this.regProfesion,
            this.procedencia,this.busProcedencia,this.regProcedencia,this.ministerio,this.busMinisterio,this.regMinisterio,
            this.idioma,this.busIdioma,this.regIdioma,this.estadoCivil,this.busEstadoCivil,this.regEstadoCivil,
            this.tipoOfrenda,this.busTipoOfrenda,this.regTipoOfrenda,this.tipoMoneda,this.busTipoMoneda,this.regTipoMoneda,
            this.tipoPago,this.busTipoPago,this.regTipoPago,this.libros,this.busLibros,this.regLibros,
            this.iglesia,this.busIglesia,this.regIglesia,this.celula,this.busCelula,this.regCelula,
            this.cargo,this.busCargo,this.regCargo,
            this.mantenimientoIglesia,this.empresa,this.busEmpresa,this.regEmpresa,this.escuela,this.busEscuela,this.regEscuela,
            this.especialidad,this.busEspecialidad,this.regEspecialidad,this.lineaTelefonica,this.busLineTelefonica,this.regLineaTelefonica,
            this.sexo,this.busSexo,this.regSexo,this.cargoIglesia,this.busCargoIglesia,this.regCargoIglesia,
            this.administrar,this.itemUsuario,this.busUsuario,this.regUsuario,this.rol,this.busRol,this.regRol, this.M_Reportes};

            var noVisible = from nv in menuRibon
                            where !permisos.Contains(nv.Tag.ToString())
                            select nv;

            noVisible.ToList().ForEach(nv => nv.Visibility = Telerik.WinControls.ElementVisibility.Collapsed);
        }

        private void busUbigeo_Click(object sender, EventArgs e)
        {
            FrmUbigeo frm = new FrmUbigeo();
            frm.currentUsuarioUbigeo = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regUbigeo_Click(object sender, EventArgs e)
        {
            frmMttUbigeo frm = new frmMttUbigeo();
            frm.AddUbigeo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busProfesion_Click(object sender, EventArgs e)
        {
            FrmProfesion frm = new FrmProfesion();
            frm.currentUsuarioProfesion = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regProfesion_Click(object sender, EventArgs e)
        {
            FrmMttoProfesion frm = new FrmMttoProfesion();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busProcedencia_Click(object sender, EventArgs e)
        {
            FrmProcedencia frm = new FrmProcedencia();
            frm.currentUsuarioProcedencia = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regProcedencia_Click(object sender, EventArgs e)
        {
            FrmMttoProcedencia frm = new FrmMttoProcedencia();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busMinisterio_Click(object sender, EventArgs e)
        {
            FrmMinisterio frm = new FrmMinisterio();
            frm.currentUsuarioMinisterio = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regMinisterio_Click(object sender, EventArgs e)
        {
            FrmMttoMinisterio frm = new FrmMttoMinisterio();
            frm.AddMinisteriio();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busIdioma_Click(object sender, EventArgs e)
        {
            FrmIdioma frm = new FrmIdioma();
            frm.currentUsuarioIdioma = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regIdioma_Click(object sender, EventArgs e)
        {
            FrmMttoIdioma frm = new FrmMttoIdioma();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busEstadoCivil_Click(object sender, EventArgs e)
        {
            FrmEstadoCivil frm = new FrmEstadoCivil();
            frm.currentUsuarioEstadoCivil = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regEstadoCivil_Click(object sender, EventArgs e)
        {
            FrmMttoEstadoCivil frm = new FrmMttoEstadoCivil();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busTipoOfrenda_Click(object sender, EventArgs e)
        {
            frmTipoOfrenda frm = new frmTipoOfrenda();
            frm.currentUsuarioTipoOfrenda = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regTipoOfrenda_Click(object sender, EventArgs e)
        {
            frmMttoTipoOfrenda frm = new frmMttoTipoOfrenda();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busTipoMoneda_Click(object sender, EventArgs e)
        {
            frmTipoMoneda frm = new frmTipoMoneda();
            frm.currentUsuarioTipoMoneda = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regTipoMoneda_Click(object sender, EventArgs e)
        {
            frmMttoTipoMoneda frm = new frmMttoTipoMoneda();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busTipoPago_Click(object sender, EventArgs e)
        {
            FrmTipoPago frm = new FrmTipoPago();
            frm.currentUsuarioTipoPago = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regTipoPago_Click(object sender, EventArgs e)
        {
            FrmMttoTipoPago frm = new FrmMttoTipoPago();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busLibros_Click(object sender, EventArgs e)
        {
            FrmLibro frm = new FrmLibro();
            frm.currentUsuarioLibro = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regLibros_Click(object sender, EventArgs e)
        {
            FrmMttoLibro frm = new FrmMttoLibro();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busIglesia_Click(object sender, EventArgs e)
        {
            FrmIglesia frm = new FrmIglesia();
            frm.currentUsuarioIglesia = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regIglesia_Click(object sender, EventArgs e)
        {
            FrmMttoIglesia frm = new FrmMttoIglesia();
            frm.currentUsuarioMttoIglesia = currentUsuario;
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busCelula_Click(object sender, EventArgs e)
        {
            FrmCelula frm = new FrmCelula();
            frm.currentUsuarioCelula = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regCelula_Click(object sender, EventArgs e)
        {
            FrmMttoCelula frm = new FrmMttoCelula();
            frm.currentUsuarioMttoCelula = currentUsuario;
            frm.AddCelula();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void radMenuItem1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void busCargo_Click(object sender, EventArgs e)
        {
            FrmCargo frm = new FrmCargo();
            frm.currentUsuarioCargo = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regCargo_Click(object sender, EventArgs e)
        {
            FrmMttoCargo frm = new FrmMttoCargo();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busMiembro_Click(object sender, EventArgs e)
        {
            FrmPersona frm = new FrmPersona();
            frm.currentUsuarioPersona = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regMiembro_Click(object sender, EventArgs e)
        {
            FrmMttoPersona frm = new FrmMttoPersona();
            frm.currentUsuarioMttoPersona = currentUsuario;
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void cerrarSesion_Click(object sender, EventArgs e)
        {
            FrmLogin frm = new FrmLogin();
            frm.Show();
            this.Hide();
        }

        private void busUsuario_Click(object sender, EventArgs e)
        {
            FrmUsuario frm = new FrmUsuario();
            frm.currentUsuarioMenuUsuario = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regUsuario_Click(object sender, EventArgs e)
        {
            FrmMttoUsuario frm = new FrmMttoUsuario();
            frm.currentUsuarioMttoUsuario = currentUsuario;
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void cambiarPassword_Click(object sender, EventArgs e)
        {
            if (currentUsuario != null)
            {
                FrmCambiarPassword frm = new FrmCambiarPassword();
                frm._usuario = currentUsuario;
                frm.EditarUsuario();
                frm.ShowDialog();
            }
            else
            {
                MessageBox.Show("Debe Iniciar Sesión", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void busTransferencia_Click(object sender, EventArgs e)
        {
            FrmDatosTransferencia frm = new FrmDatosTransferencia();
            frm.currentUsuarioDatosTransferencia = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regTransferencia_Click(object sender, EventArgs e)
        {
            FrmMttoDatosTransferencia frm = new FrmMttoDatosTransferencia();
            frm.currentUsuarioMttoDatosTransferencia = currentUsuario;
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busOfrenda_Click(object sender, EventArgs e)
        {
            FrmOfrenda frm = new FrmOfrenda();
            frm.currentUsuarioOfrenda = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regOfrenda_Click(object sender, EventArgs e)
        {
            FrmMttoOfrenda frm = new FrmMttoOfrenda();
            frm.currentUsuarioMttoOfrenda = currentUsuario;
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busCitas_Click(object sender, EventArgs e)
        {
            FrmCitas frm = new FrmCitas();
            frm.currentUsuarioCita = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regCitas_Click(object sender, EventArgs e)
        {
            FrmMttoCitas frm = new FrmMttoCitas();
            frm.currentUsuarioMttoCitas = currentUsuario;
            frm.Nuevo();
            frm.MdiParent = this.MdiParent;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busAsistencia_Click(object sender, EventArgs e)
        {
            FrmAsistencia frm = new FrmAsistencia();
            frm.currentUsuarioAsistencia = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regAsistencia_Click(object sender, EventArgs e)
        {
            FrmMttoAsistencia frm = new FrmMttoAsistencia();
            frm.currentUsuarioMttoAsistencia = currentUsuario;
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busDiscipulado_Click(object sender, EventArgs e)
        {
            FrmRamaDiscipulado frm = new FrmRamaDiscipulado();
            frm.currentUsuarioRamaDiscipulado = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busEmpresa_Click(object sender, EventArgs e)
        {
            FrmEmpresa frm = new FrmEmpresa();
            frm.currentUsuarioEmpresa = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regEmpresa_Click(object sender, EventArgs e)
        {
            FrmMttoEmpresa frm = new FrmMttoEmpresa();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busEspecialidad_Click(object sender, EventArgs e)
        {
            FrmEspecialidad frm = new FrmEspecialidad();
            frm.currentUsuarioEspecialidad = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regEspecialidad_Click(object sender, EventArgs e)
        {
            FrmMttoEspecialidad frm = new FrmMttoEspecialidad();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busLineTelefonica_Click(object sender, EventArgs e)
        {
            FrmLineaTelefonica frm = new FrmLineaTelefonica();
            frm.currentUsuarioLineaTelefonica = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regLineaTelefonica_Click(object sender, EventArgs e)
        {
            FrmMttoLineaTelefonica frm = new FrmMttoLineaTelefonica();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busSexo_Click(object sender, EventArgs e)
        {
            FrmSexo frm = new FrmSexo();
            frm.currentUsuarioSexo = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regSexo_Click(object sender, EventArgs e)
        {
            FrmMttoSexo frm = new FrmMttoSexo();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busEscuela_Click(object sender, EventArgs e)
        {
            FrmEscuela frm = new FrmEscuela();
            frm.currentUsuarioEscuela = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regEscuela_Click(object sender, EventArgs e)
        {
            FrmMttoEscuela frm = new FrmMttoEscuela();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busRol_Click(object sender, EventArgs e)
        {
            FrmRol frm = new FrmRol();
            frm.currentUsuarioRol = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regRol_Click(object sender, EventArgs e)
        {
            FrmMttoRol frm = new FrmMttoRol();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busTipoReunion_Click(object sender, EventArgs e)
        {
            FrmTipoReunion frm = new FrmTipoReunion();
            frm.currentUsuarioTIpoReunion = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regTipoReunion_Click(object sender, EventArgs e)
        {
            FrmMttoTipoReunion frm = new FrmMttoTipoReunion();
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busMatrimonio_Click_1(object sender, EventArgs e)
        {
            FrmMatrimonio frm = new FrmMatrimonio();
            frm.currentUsuarioMatrimonio = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regMatrimonio_Click(object sender, EventArgs e)
        {
            FrmMttoMatrimonio frm = new FrmMttoMatrimonio();
            frm.currentUsuarioMttoMatrimonio = currentUsuario;
            frm.Nuevo();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busCargoIglesia_Click(object sender, EventArgs e)
        {
            FrmCargoIglesia frm = new FrmCargoIglesia();
            frm.currentUsuarioCargoIglesia = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regCargoIglesia_Click(object sender, EventArgs e)
        {
            FrmMttoCargoIglesia frm = new FrmMttoCargoIglesia();
            frm.NuevoCargoIglesia();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void btnMembresia_Click(object sender, EventArgs e)
        {
            Reportes.frmReporteMembresia  frm = new Reportes.frmReporteMembresia();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }


    }
}
